
#ifndef FILE_OPERATIONCATEGORY_BASE_H
#define FILE_OPERATIONCATEGORY_BASE_H

namespace OperationCategory
{
	class Base
	{
	public:
		Base();
		virtual ~Base();

	public:
		virtual wxClassInfo* GetWindowClassInfo() = 0;

		virtual void GetName(wxString& name) = 0;

		virtual bool CreateWindow(
			wxWindow *parent, wxWindowID id, 
			const wxPoint &position, const wxSize& size, long style 
			);

		virtual void MoveWindow(const wxRect& rect);
		virtual void Activate(bool bActivate=true);

	protected:
		wxWindow* m_pWindow;

	public:
		class BaseWindow : public wxWindow
		{
		protected:
			BaseWindow();

		protected:
			bool m_bInOnCreate;

		protected:
			virtual void CreateControls();

		private:

			void OnCreate(wxWindowCreateEvent& event);
			DECLARE_EVENT_TABLE();
		};

	};
}

#endif